

package tables

import (
	"fmt"
	"game/game-design/loader"
	"strings"
	ministruct "sanguo/sanguo-design/src/ministruct"
)


var BattleAttrTable *BattleAttrTableStruct = &BattleAttrTableStruct{}

type BattleAttrTableStruct struct {
	loader.DesignTable[BattleAttrCfg]
	
	idIndex map[string]*BattleAttrCfg
	
	
	
}

func (t *BattleAttrTableStruct) FileName() string {
	return "Z战斗_战斗属性"
}

// 从索引中获取对象，获取不到会抛异常
func (t *BattleAttrTableStruct) GetInIdIndex(
	id int32,
) *BattleAttrCfg {
	key :=
		fmt.Sprint(id)
	
	cfg, ok := t.idIndex[key]
	if !ok {
		panic("BattleAttrTable when GetInIdIndex use key not found " + key)
	}
	return cfg
}

// 从索引中查找对象，获取不到会返回null
func (t *BattleAttrTableStruct) FindInIdIndex(
	id int32,
) (*BattleAttrCfg, bool) {
	key :=
		fmt.Sprint(id)
	
	cfg, ok := t.idIndex[key]
	return cfg, ok
}

// 加载idIndex索引
func (t *BattleAttrTableStruct) loadIdIndex() {
	idIndex := make(map[string]*BattleAttrCfg)
	for _, v := range t.All() {
		keys := []string {
			fmt.Sprint(v.id),
		}
		key := strings.Join(keys, "_")
		_, exist := idIndex[key]
		if exist {
			fmt.Println(t.FileName(), " found duplicate key ", key, " in index ", "idIndex")
			continue
		}
		idIndex[key] = v
	}
	t.idIndex = idIndex
}



func (t *BattleAttrTableStruct) LoadAutoGenerate() {
	//加载索引
	t.loadIdIndex()

	
}



type BattleAttrCfg struct {
	id int32 //属性ID
	ratioAttr int32 //万分比属性
	type1 int32 //属性相加
	type2 int32 //百分比相加
	type3 int32 //加成类型
	type4 int32 //加成目标
	sumType int32 //计算类型
	power int32 //战力值（万分比）
	sort int32 //2级界面排序
	inherit int32 //继承平均属性
	point int32 //战力对比计算值
}
// 属性ID
func (c *BattleAttrCfg) GetId() int32 {
	return c.id
}
// 万分比属性
func (c *BattleAttrCfg) GetRatioAttr() int32 {
	return c.ratioAttr
}
// 属性相加
func (c *BattleAttrCfg) GetType1() int32 {
	return c.type1
}
// 百分比相加
func (c *BattleAttrCfg) GetType2() int32 {
	return c.type2
}
// 加成类型
func (c *BattleAttrCfg) GetType3() int32 {
	return c.type3
}
// 加成目标
func (c *BattleAttrCfg) GetType4() int32 {
	return c.type4
}
// 计算类型
func (c *BattleAttrCfg) GetSumType() int32 {
	return c.sumType
}
// 战力值（万分比）
func (c *BattleAttrCfg) GetPower() int32 {
	return c.power
}
// 2级界面排序
func (c *BattleAttrCfg) GetSort() int32 {
	return c.sort
}
// 继承平均属性
func (c *BattleAttrCfg) GetInherit() int32 {
	return c.inherit
}
// 战力对比计算值
func (c *BattleAttrCfg) GetPoint() int32 {
	return c.point
}

func BattleAttrTableStructNoUse() {
	fmt.Println(ministruct.Cost{})
}
